/**
   面向对象三大特性
       封装  继承  多态 
                   一种事物有多种表现形态
       
       继承
          => 子类继承父类子类就拥有父相关属性和方法
        
        现实生活中
           儿子  -> 子类
           父亲  -> 父类

        软件世界中
           两个类存储 父子关系

           class A{
              money:number
              home:string
              
              playGame(){
              }
           }

          B子类     A父类
           class B extends A{
              
           }

      super关键字 
         => 作为方法在子类构造器中调用父类的构造器，对父类进行实例化


 */
 class Parent{
    name:string;// 100W
    age:number; //房子
    // 不参的构造器是默认
    constructor(name:string,age:number){
        this.name = name
        this.age = age
    }
    
    playGame(){
        console.log(this.name,'玩游戏')
    }
 }


 // 先有父类再有子类
 class Son extends Parent{
    constructor(name:string,age:number){
      // 实例化父类
      super(name,age)
    }
 }

 const son1:Son = new Son('jack',18) // 创建一个姓名是jack，年龄是18的人
 son1.playGame()
 console.log( son1.name ,  son1.age)

